﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using _4.Modelado.Eventos;

namespace _3.Datos.Eventos
{
    public class EventoDB
    {
        /// <summary>
        ///     Este método inserta y modifica una área
        /// </summary>
        /// <param name="comando">sentencia SQL</param>
        /// <param name="obj">Contiene las variable de Articulo</param>
        public void EventoGuardar(SqlCommand comando, Evento obj)
        {
            try
            {
                string sp = "usp_EventosGuardar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_Evento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@EventoNombre", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@EventoContrato", SqlDbType.Bit));
                comando.Parameters.Add(new SqlParameter("@EventoPresupuesto ", SqlDbType.Money));
                comando.Parameters.Add(new SqlParameter("@EventoUbicacion", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@EventoCapacidad", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@EventoCostoPersona", SqlDbType.Money));
                comando.Parameters.Add(new SqlParameter("@EventoFinCobro", SqlDbType.DateTime));
                comando.Parameters.Add(new SqlParameter("@EventoInicoCobro", SqlDbType.DateTime));
                comando.Parameters.Add(new SqlParameter("@FK_Usuario_Evento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@EventoGratis", SqlDbType.Bit));
                comando.Parameters.Add(new SqlParameter("@EventoRegistraAsistencia", SqlDbType.Bit));
                comando.Parameters.Add(new SqlParameter("@EventoContractoReferencia", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@FK_Tipo_Evento", SqlDbType.Int));

                comando.Parameters[0].Value = obj.PK_Evento;
                comando.Parameters[1].Value = obj.EventoNombre;
                comando.Parameters[2].Value = obj.EventoContrato;
                comando.Parameters[3].Value = obj.EventoPresupuesto;
                comando.Parameters[4].Value = obj.EventoUbicacion;
                comando.Parameters[5].Value = obj.EventoCapacidad;
                comando.Parameters[6].Value = obj.EventoCostoPersona;
                comando.Parameters[7].Value = obj.EventoFinCobro;
                comando.Parameters[8].Value = obj.EventoInicoCobro;
                comando.Parameters[9].Value = obj.FK_Usuario_Evento;
                comando.Parameters[10].Value = obj.EventoGratis;
                comando.Parameters[11].Value = obj.EventoRegistraAsistencia;
                comando.Parameters[12].Value = obj.EventoContractoReferencia;
                comando.Parameters[13].Value = obj.FK_Tipo_Evento;


                comando.ExecuteNonQuery();
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public DataSet EventosConsultarDs(SqlCommand comando, Evento objEvento)
        {
            try
            {
                string sp = "usp_EventosConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter(comando);
                var ds = new DataSet();
                da.Fill(ds);

                return ds;
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<Evento> EventosConsultar(SqlCommand comando, Evento objEvento)
        {
            try
            {
                string sp = "usp_EventosConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter(comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                var lista = new List<Evento>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var obj = new Evento();

                    obj.PK_Evento = Convert.ToInt32(dt.Rows[i]["PK_Evento"]);
                    obj.EventoNombre = Convert.ToString(dt.Rows[i]["EventoNombre"]);
                    obj.EventoContrato = Convert.ToBoolean(dt.Rows[i]["EventoContrato"]);
                    obj.EventoPresupuesto = Convert.ToDecimal(dt.Rows[i]["EventoPresupuesto"]);
                    obj.EventoUbicacion = Convert.ToString(dt.Rows[i]["EventoUbicacion"]);
                    obj.EventoCapacidad = Convert.ToInt32(dt.Rows[i]["EventoCapacidad"]);
                    obj.EventoCostoPersona = Convert.ToDecimal(dt.Rows[i]["EventoCostoPersona"]);
                    obj.EventoInicoCobro = Convert.ToDateTime(dt.Rows[i]["EventoInicoCobro"]);
                    obj.EventoFinCobro = Convert.ToDateTime(dt.Rows[i]["EventoFinCobro"]);
                    obj.EventoFecha = Convert.ToDateTime(dt.Rows[i]["EventoFecha"]);
                    obj.FK_Usuario_Evento = Convert.ToInt32(dt.Rows[i]["FK_Usuario_Evento"]);

                    lista.Add(obj);
                }
                return lista;
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public void EventoEliminar(SqlCommand comando, Evento obj)
        {
            try
            {
                string sp = "usp_EventoEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_Evento", SqlDbType.Int));
                comando.Parameters[0].Value = obj.PK_Evento;


                comando.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
    }
}